home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Source Code
/
Visual Basic Source Code.iso
/
vbsource
/
vb_g_prt
/
gprinter.bas
< prev
next >
Wrap
BASIC Source File
|
1995-09-06
|
46KB
|
1,319 lines
'----------------------------------------------------------------
'Copyright 1994 Unger Business Systems All Rights Reserved
'This code is distributed as shareware. If you use it, you
'are required by law to register it. Please contact Unger
'Business Systems at 11926 Barrett Brae, Houston, TX 77072-4004
'or call (713) 498-8517. Registration fee is $20.00 US
'See the README.TXT file for more information
'
'All code, forms, modules, controls, etc. are provided without
'warranty or liability
'----------------------------------------------------------------
Option Explicit
Global CRLF$
Dim di%, lf As LOGFONT, lp As LOGPEN
Dim dev$, DevName$, DevOutput$, DeviceDriver$
Dim dm As DEVMODE, dmout As DEVMODE
Dim libhnd%
Dim bufsize%
Dim dminstring$, dmoutstring$
Dim dminaddr&, dmoutaddr&
Dim dinfo As DOCINFO
Dim docname$, CurrX%, CurrY%
Dim oldcursor%, CurrentFont%, oldfont%, Oldpen%
Dim lpRect As RECT
Global GenPaperWidth#, GenPaperLength#, GenPaperSize%
Global AbortPrinting%
Global DoShowDevMode%, DoShowDevCaps%
Global DoShowPaperSize%
Global Const MaxLinesArray = 30
Global LinesArray(MaxLinesArray) As String
Global RemainStr$
Global NumberOfLines%
Const DefPtSize = 10
Global CurrentPen%
Global PrtXRes%, PrtYRes%, FontIsBold%, OriginalFontWeight%
Global Const DT_TOP = &H0
Global Const DT_LEFT = &H0
Global Const DT_CENTER = &H1
Global Const DT_RIGHT = &H2
Global Const DT_VCENTER = &H4
Global Const DT_BOTTOM = &H8
Global Const DT_WORDBREAK = &H10
Global Const DT_SINGLELINE = &H20
Global Const DT_EXPANDTABS = &H40
Global Const DT_TABSTOP = &H80
Global Const DT_NOCLIP = &H100
Global Const DT_EXTERNALLEADING = &H200
Global Const DT_CALCRECT = &H400
Global Const DT_NOPREFIX = &H800
Global Const DT_INTERNAL = &H1000
Global Const SYSTEM_FONT = 13
' color enable/disable for color printers
Global Const DMCOLOR_MONOCHROME = 1
Global Const DMCOLOR_COLOR = 2
' paper selections
' Warning: The PostScript driver mistakingly uses DMPAPER_ values between
' 50 and 56. Don't use this range when defining new paper sizes.
Global Const DMPAPER_LETTER = 1 'Letter 8 1/2 x 11 in
Global Const DMPAPER_LETTERSMALL = 2 'Letter Small 8 1/2 x 11 in
Global Const DMPAPER_TABLOID = 3 'Tabloid 11 x 17 in
Global Const DMPAPER_LEDGER = 4 'Ledger 17 x 11 in
Global Const DMPAPER_LEGAL = 5 'Legal 8 1/2 x 14 in
Global Const DMPAPER_STATEMENT = 6 'Statement 5 1/2 x 8 1/2 in
Global Const DMPAPER_EXECUTIVE = 7 'Executive 7 1/4 x 10 1/2 in
Global Const DMPAPER_A3 = 8 'A3 297 x 420 mm
Global Const DMPAPER_A4 = 9 'A4 210 x 297 mm
Global Const DMPAPER_A4SMALL = 10 'A4 Small 210 x 297 mm
Global Const DMPAPER_A5 = 11 'A5 148 x 210 mm
Global Const DMPAPER_B4 = 12 'B4 250 x 354
Global Const DMPAPER_B5 = 13 'B5 182 x 257 mm
Global Const DMPAPER_FOLIO = 14 'Folio 8 1/2 x 13 in
Global Const DMPAPER_QUARTO = 15 'Quarto 215 x 275 mm
Global Const DMPAPER_10X14 = 16 '10x14 in
Global Const DMPAPER_11X17 = 17 '11x17 in
Global Const DMPAPER_NOTE = 18 'Note 8 1/2 x 11 in
Global Const DMPAPER_ENV_9 = 19 'Envelope #9 3 7/8 x 8 7/8
Global Const DMPAPER_ENV_10 = 20 'Envelope #10 4 1/8 x 9 1/2
Global Const DMPAPER_ENV_11 = 21 'Envelope #11 4 1/2 x 10 3/8
Global Const DMPAPER_ENV_12 = 22 'Envelope #12 4 \276 x 11
Global Const DMPAPER_ENV_14 = 23 'Envelope #14 5 x 11 1/2
Global Const DMPAPER_CSHEET = 24 'C size sheet
Global Const DMPAPER_DSHEET = 25 'D size sheet
Global Const DMPAPER_ESHEET = 26 'E size sheet
Global Const DMPAPER_ENV_DL = 27 'Envelope DL 110 x 220mm
Global Const DMPAPER_ENV_C5 = 28 'Envelope C5 162 x 229 mm
Global Const DMPAPER_ENV_C3 = 29 'Envelope C3 324 x 458 mm
Global Const DMPAPER_ENV_C4 = 30 'Envelope C4 229 x 324 mm
Global Const DMPAPER_ENV_C6 = 31 'Envelope C6 114 x 162 mm
Global Const DMPAPER_ENV_C65 = 32 'Envelope C65 114 x 229 mm
Global Const DMPAPER_ENV_B4 = 33 'Envelope B4 250 x 353 mm
Global Const DMPAPER_ENV_B5 = 34 'Envelope B5 176 x 250 mm
Global Const DMPAPER_ENV_B6 = 35 'Envelope B6 176 x 125 mm
Global Const DMPAPER_ENV_ITALY = 36 'Envelope 110 x 230 mm
Global Const DMPAPER_ENV_MONARCH = 37 'Envelope Monarch 3.875 x 7.5 in
Global Const DMPAPER_ENV_PERSONAL = 38 '6 3/4 Envelope 3 5/8 x 6 1/2 in
Global Const DMPAPER_FANFOLD_US = 39 'US Std Fanfold 14 7/8 x 11 in
Global Const DMPAPER_FANFOLD_STD_GERMAN = 40 'German Std Fanfold 8 1/2 x 12 in
Global Const DMPAPER_FANFOLD_LGL_GERMAN = 41 'German Legal Fanfold 8 1/2 x 13 in
Global Const DMPAPER_USER = 256
' printer bin selections
Global Const DMBIN_UPPER = 1
Global Const DMBIN_ONLYONE = 1
Global Const DMBIN_LOWER = 2
Global Const DMBIN_MIDDLE = 3
Global Const DMBIN_MANUAL = 4
Global Const DMBIN_ENVELOPE = 5
Global Const DMBIN_ENVMANUAL = 6
Global Const DMBIN_AUTO = 7
Global Const DMBIN_TRACTOR = 8
Global Const DMBIN_SMALLFMT = 9
Global Const DMBIN_LARGEFMT = 10
Global Const DMBIN_LARGECAPACITY = 11
Global Const DMBIN_CASSETTE = 14
Global Const DMBIN_USER = 256 'device specific bins start here
' print qualities
Global Const DMRES_DRAFT = -1
Global Const DMRES_LOW = -2
Global Const DMRES_MEDIUM = -3
Global Const DMRES_HIGH = -4
' Printer duplex enable
Global Const DMDUP_SIMPLEX = 1
Global Const DMDUP_VERTICAL = 2
Global Const DMDUP_HORIZONTAL = 3
' TrueType options
Global Const DMTT_BITMAP = 1 'print TT fonts as graphics
Global Const DMTT_DOWNLOAD = 2 'download TT fonts as soft fonts
Global Const DMTT_SUBDEV = 3 'substitute device fonts for TT fonts
' Pen Styles
Global Const PS_SOLID = 0
Global Const PS_DASH = 1 ' -------
Global Const PS_DOT = 2 ' .......
Global Const PS_DASHDOT = 3 ' _._._._
Global Const PS_DASHDOTDOT = 4 ' _.._.._
Global Const PS_NULL = 5
Global Const PS_INSIDEFRAME = 6
Global Const TMPF_FIXED_PITCH = 1
Global Const TMPF_VECTOR = 2
Global Const TMPF_DEVICE = 8
Global Const TMPF_TRUETYPE = 4
Global Const DM_IN_BUFFER = 8
Global Const DM_IN_PROMPT = 4
Global Const DM_OUT_BUFFER = 2
Global Const DMORIENT_PORTRAIT = 1
Global Const DMORIENT_LANDSCAPE = 2
Global Const SP_OUTOFDISK = (-4)
' field selection bits
Global Const DM_ORIENTATION = &H1&
Global Const DM_PAPERSIZE = &H2&
Global Const DM_PAPERLENGTH = &H4&
Global Const DM_PAPERWIDTH = &H8&
Global Const DM_SCALE = &H10&
Global Const DM_COPIES = &H100&
Global Const DM_DEFAULTSOURCE = &H200&
Global Const DM_PRINTQUALITY = &H400&
Global Const DM_COLOR = &H800&
Global Const DM_DUPLEX = &H1000&
Global Const DM_YRESOLUTION = &H2000&
Global Const DM_TTOPTION = &H4000&
' device capabilities indices
Global Const DC_FIELDS = 1
Global Const DC_PAPERS = 2
Global Const DC_PAPERSIZE = 3
Global Const DC_MINEXTENT = 4
Global Const DC_MAXEXTENT = 5
Global Const DC_BINS = 6
Global Const DC_DUPLEX = 7
Global Const DC_SIZE = 8
Global Const DC_EXTRA = 9
Global Const DC_VERSION = 10
Global Const DC_DRIVER = 11
Global Const DC_BINNAMES = 12
Global Const DC_ENUMRESOLUTIONS = 13
Global Const DC_FILEDEPENDENCIES = 14
Global Const DC_TRUETYPE = 15
Global Const DC_PAPERNAMES = 16
Global Const DC_ORIENTATION = 17
Global Const DC_COPIES = 18
' DC_TRUETYPE bit fields
Global Const DCTT_BITMAP = &H1&
Global Const DCTT_DOWNLOAD = &H2&
Global Const DCTT_SUBDEV = &H4&
Global Const PD_RETURNDC = &H100&
Declare Function GetTextExtentPoint% Lib "GDI" (ByVal hDC%, ByVal lpszString$, ByVal cbString%, lpSize As SIZEAPI)
Declare Function GetStockObject% Lib "GDI" (ByVal nIndex%)
Declare Function SelectObject% Lib "GDI" (ByVal hDC%, ByVal hObject%)
Declare Function GetObject2% Lib "GDI" Alias "GetObject" (ByVal hObject%, ByVal nCount%, ByVal lpObject&)
Declare Function CreateFontIndirect% Lib "GDI" (lpLogFont As LOGFONT)
Declare Function DeleteObject% Lib "GDI" (ByVal hObject%)
Declare Function MoveTo& Lib "GDI" (ByVal hDC%, ByVal x%, ByVal y%)
Declare Function L